\hypertarget{web_8c}{}\section{web/web.c File Reference}
\label{web_8c}\index{web/web.\+c@{web/web.\+c}}


Small web server for esp8266.  


{\ttfamily \#include \char`\"{}user\+\_\+config.\+h\char`\"{}}\\*
{\ttfamily \#include $<$stdint.\+h$>$}\\*
{\ttfamily \#include $<$stdarg.\+h$>$}\\*
{\ttfamily \#include $<$string.\+h$>$}\\*
{\ttfamily \#include $<$math.\+h$>$}\\*
{\ttfamily \#include \char`\"{}display/ili9341.\+h\char`\"{}}\\*
{\ttfamily \#include \char`\"{}web/web.\+h\char`\"{}}\\*
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \hyperlink{web_8c_aa24597a54a085c6c2c33b64138f09eff}{M\+A\+X\+\_\+\+M\+SG}~1024
\begin{DoxyCompactList}\small\item\em max size of E\+R\+R\+O\+R/\+R\+E\+D\+I\+R\+E\+C\+T/\+S\+T\+A\+T\+US Message buffer \end{DoxyCompactList}\item 
\#define \hyperlink{web_8c_a94854d8a062d4159f7610f11f0f7baf1}{C\+G\+I\+\_\+\+T\+O\+K\+E\+N\+\_\+\+S\+I\+ZE}~128
\begin{DoxyCompactList}\small\item\em max size of C\+GI token \end{DoxyCompactList}\item 
\#define \hyperlink{web_8c_a6b20d41d6252e9871430c242cb1a56e7}{B\+U\+F\+F\+E\+R\+\_\+\+S\+I\+ZE}~1000
\begin{DoxyCompactList}\small\item\em max size of read/write socket buffers Note\+: reducing this size below 1500 will slow down transfer a great deal \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8c_a32080fe9d866898d9fb3dce10079b1ff}{web\+\_\+sep} (void)
\begin{DoxyCompactList}\small\item\em printer seperator \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8c_a6b59ca0b6eea0b246eb56ae2b37ee2d8}{wait\+\_\+send} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p)
\begin{DoxyCompactList}\small\item\em Wait for buffer to send for this connection If write\+\_\+buffer sending flag is set then wait for it to clear. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8c_ab32eaeba7482e80dde268638c1514a6d}{write\+\_\+buffer} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p)
\begin{DoxyCompactList}\small\item\em Socket write buffer for this connection We wait for previous send to complete -\/ then send any new data We do not wait for new data to finish sending -\/ you use flush for that. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8c_a5e0970f0d980f87fb5524a757f96fa84}{write\+\_\+flush} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p)
\begin{DoxyCompactList}\small\item\em Write all outstanding data and wait for it to send. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8c_a50c911d56af7c50bc045cffb983d76f0}{write\+\_\+byte} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p, int c)
\begin{DoxyCompactList}\small\item\em Write a byte (buffered) using the \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} socket buffers for this connection If the buffers are full the socket is written using write\+\_\+flush. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8c_aaaac061db0c7646d5b6c8bdfe3089ae7}{led\+\_\+on} (int led)
\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8c_aec67a5a0b10a3ad2bbfe81de832ef239}{led\+\_\+off} (int led)
\begin{DoxyCompactList}\small\item\em Turn off virtual L\+ED. \end{DoxyCompactList}\item 
static \hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8c_a6415f4715cb5cd52ecca2dce79906bcd}{tcp\+\_\+accept} (\hyperlink{web_8h_a6dae30cd245bde804cf3e2c09e39a4b6}{espconn\+\_\+t} $\ast$esp\+\_\+config, esp\+\_\+tcp $\ast$esp\+\_\+tcp\+\_\+config, \hyperlink{send_8c_a273cf69d639a59973b6019625df33e30}{uint16\+\_\+t} port, void($\ast$connect\+\_\+callback)(struct espconn $\ast$))
\begin{DoxyCompactList}\small\item\em Accept an incomming connection, setup connect\+\_\+callback. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8c_ac827567ee25b284c2992fed88249ab96}{rwbuf\+\_\+rinit} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p)
\begin{DoxyCompactList}\small\item\em Initialize socket read status and read index. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8c_a6a137266340baece84e055b2d49cd0c2}{rwbuf\+\_\+winit} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p)
\begin{DoxyCompactList}\small\item\em Initialize socket send status and write index. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8c_a89dceabcd370d352c3efed0e689fd551}{display\+\_\+ipv4} (char $\ast$msg, \hyperlink{send_8c_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$ip, int port)
\begin{DoxyCompactList}\small\item\em Display I\+P\+V4 address. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8c_af089b318dcc1ebbec17ae7392a19e457}{rwbuf\+\_\+delete} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p)
\begin{DoxyCompactList}\small\item\em Delete socket read/write buffers. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$ \hyperlink{web_8c_a333e54d833af007aa20f3ae18e260c38}{rwbuf\+\_\+create} ()
\begin{DoxyCompactList}\small\item\em Create socket read/write buffer for a connection. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$ \hyperlink{web_8c_a63cfcb009066f483330ec359b8493fbe}{find\+\_\+connection} (\hyperlink{web_8h_a6dae30cd245bde804cf3e2c09e39a4b6}{espconn\+\_\+t} $\ast$conn, int $\ast$index, char $\ast$msg)
\begin{DoxyCompactList}\small\item\em Find a read/write socket buffer for an espconn connection. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$ \hyperlink{web_8c_aef2853a921eb49702f064eaa925b16e1}{create\+\_\+connection} (\hyperlink{web_8h_a6dae30cd245bde804cf3e2c09e39a4b6}{espconn\+\_\+t} $\ast$conn)
\begin{DoxyCompactList}\small\item\em Allocate read/write socket buffers and add it to the working pool. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8c_a7f82234178b3e152072e979c17b40af2}{delete\+\_\+connection} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p)
\begin{DoxyCompactList}\small\item\em Delete our main connection structure and connection buffers. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8c_a751d54408d691ebc079108ffc42ee436}{write\+\_\+len} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p, char $\ast$str, int len)
\begin{DoxyCompactList}\small\item\em Write data using buffered write\+\_\+byte function. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8c_a2a5efc80e175181baf607f7f9a1358e5}{write\+\_\+str} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p, char $\ast$str)
\begin{DoxyCompactList}\small\item\em Write string using buffered write\+\_\+byte function. \end{DoxyCompactList}\item 
static \hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8c_a620628fcf72ac4e4d0228ff38d31bbd1}{\+\_\+write\+\_\+byte\+\_\+fn} (struct \hyperlink{struct__printf__t}{\+\_\+printf\+\_\+t} $\ast$pr, char c)
\begin{DoxyCompactList}\small\item\em low level vsock\+\_\+printf function that calls socket write\+\_\+byte \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8c_a912affa80386fb06e19c3ce5342701f5}{vsock\+\_\+printf} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p, const char $\ast$fmt, va\+\_\+list va)
\begin{DoxyCompactList}\small\item\em vsock\+\_\+printf function \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8c_a38a7c7d1f5222edff77e9a7a20195696}{sock\+\_\+printf} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p, const char $\ast$fmt,...)
\begin{DoxyCompactList}\small\item\em sock\+\_\+printf function \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8c_a5cb82637d6d97812355aaa7a7fb4ccbe}{html\+\_\+msg} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p, int status, char type, char $\ast$fmt,...)
\begin{DoxyCompactList}\small\item\em Send an H\+T\+ML status message to socket. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} char $\ast$ \hyperlink{web_8c_a2ea8a8e37ac5c7099311e4d9cdb77efb}{meminit} (\hyperlink{structmem__t}{mem\+\_\+t} $\ast$p, char $\ast$ptr, int size)
\begin{DoxyCompactList}\small\item\em in memory memory gets function \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} char $\ast$ \hyperlink{web_8c_ad834fe4d9506060f80d873fb20c186d5}{memgets} (\hyperlink{structmem__t}{mem\+\_\+t} $\ast$p)
\begin{DoxyCompactList}\small\item\em Memory gets function We A\+S\+S\+U\+ME we can replace any ~\newline
 with a \textbackslash{}0. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} char $\ast$ \hyperlink{web_8c_ae16ca93f35df1d6e5040aa464fec44ab}{mime\+\_\+type} (int type)
\begin{DoxyCompactList}\small\item\em return strung pointer for mime type index \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8c_aec5e03bbb08e40de50b3da6413e26931}{file\+\_\+type} (char $\ast$name)
\begin{DoxyCompactList}\small\item\em Determin mimetype using file name extension. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} char $\ast$ \hyperlink{web_8c_aeebdbab253618d52a35054978fe4bb0e}{html\+\_\+status} (int status)
\begin{DoxyCompactList}\small\item\em Convert html status into string using http\+\_\+status table. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8c_a9022b922953aabe534b7b68e6f3a90af}{init\+\_\+hinfo} (\hyperlink{structhinfo__t}{hinfo\+\_\+t} $\ast$hi)
\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8c_a93274f0048175d7ed429598e951a2c77}{match\+\_\+headers} (char $\ast$str, char $\ast$$\ast$p)
\begin{DoxyCompactList}\small\item\em Match G\+E\+T/\+P\+O\+ST message headers. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} char $\ast$ \hyperlink{web_8c_ab29b4d9382acde5a32fa0aad1068c38b}{process\+\_\+args} (\hyperlink{structhinfo__t}{hinfo\+\_\+t} $\ast$hi, char $\ast$ptr)
\begin{DoxyCompactList}\small\item\em Process G\+ET argments or P\+O\+ST message name/value data. H\+T\+ML encoding is done in place often reducting the size of the result. Convert name=value pairs into null terminated strings. Names and values are each terminated with an E\+OS by replaceing \textquotesingle{}?\textquotesingle{}, \textquotesingle{}\&\textquotesingle{}, \textquotesingle{}=\textquotesingle{} characters seen while scaning. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} char $\ast$ \hyperlink{web_8c_afb148431af519ffd7c3191ed3edd4d50}{first\+\_\+arg} (\hyperlink{structhinfo__t}{hinfo\+\_\+t} $\ast$hi)
\begin{DoxyCompactList}\small\item\em Find first P\+O\+S\+T/\+G\+ET argument. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} char $\ast$ \hyperlink{web_8c_ac2b1c83b2901da05a13fbc48e9c9f030}{next\+\_\+arg} (\hyperlink{structhinfo__t}{hinfo\+\_\+t} $\ast$hi)
\begin{DoxyCompactList}\small\item\em Find next P\+O\+S\+T/\+G\+ET argument We have to skip a name and a value. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} char $\ast$ \hyperlink{web_8c_a35cc0d5292df6d1df5cf3ea63e44d0b7}{arg\+\_\+name} (\hyperlink{structhinfo__t}{hinfo\+\_\+t} $\ast$hi)
\begin{DoxyCompactList}\small\item\em Return the argument name for current argument. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} char $\ast$ \hyperlink{web_8c_a12e823b35aaf4392e282d39057f45eb8}{arg\+\_\+value} (\hyperlink{structhinfo__t}{hinfo\+\_\+t} $\ast$hi)
\begin{DoxyCompactList}\small\item\em Return the argument value for current argument. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} char $\ast$ \hyperlink{web_8c_a142e7c44af77016bb329676f4466da7e}{http\+\_\+value} (\hyperlink{structhinfo__t}{hinfo\+\_\+t} $\ast$hi, char $\ast$str)
\begin{DoxyCompactList}\small\item\em Lookup and argument name and return its value. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8c_aac0e14d0751e24b7143060600fe7822a}{is\+\_\+header} (char $\ast$str, char $\ast$$\ast$p)
\begin{DoxyCompactList}\small\item\em Does the string look like a header token with a \textquotesingle{}\+:\textquotesingle{} ? \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} char $\ast$ \hyperlink{web_8c_a1723d513f866e03e8195adf0139b1603}{nextbreak} (char $\ast$ptr)
\begin{DoxyCompactList}\small\item\em Find next space or ? character. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8c_a099953c3f11ff53e89c99b0be5212b70}{u5toa} (char $\ast$ptr, \hyperlink{send_8c_a273cf69d639a59973b6019625df33e30}{uint16\+\_\+t} num)
\begin{DoxyCompactList}\small\item\em Print a decimal number into a string without an E\+OS. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8c_acfdd7b32cc9e6b5214ddbf8120a9ed7b}{html\+\_\+head} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p, int status, char type, int len)
\begin{DoxyCompactList}\small\item\em Write H\+T\+TP Contenet-\/\+Type/\+Content-\/\+Length header. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8c_a574da7d2e02f16c3ff0727061b90c46c}{parse\+\_\+http\+\_\+request} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p, \hyperlink{structhinfo__t}{hinfo\+\_\+t} $\ast$hi)
\begin{DoxyCompactList}\small\item\em Get arguments for a G\+ET or P\+O\+ST request. \end{DoxyCompactList}\item 
static \hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8c_a874f47f0da9642a0afb800adaac00c7f}{web\+\_\+data\+\_\+receive\+\_\+callback} (void $\ast$arg, char $\ast$data, unsigned short length)
\begin{DoxyCompactList}\small\item\em Network receive callback function. \end{DoxyCompactList}\item 
static \hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8c_a4bbedae551d7c3d1f09488e75a86ccdf}{web\+\_\+data\+\_\+sent\+\_\+callback} (void $\ast$arg)
\begin{DoxyCompactList}\small\item\em Network sent callback function. \end{DoxyCompactList}\item 
static \hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8c_af1da928cd361e8d3135aa1ce10da1773}{web\+\_\+data\+\_\+disconnect\+\_\+callback} (void $\ast$arg)
\begin{DoxyCompactList}\small\item\em Network disconnect callback function. \end{DoxyCompactList}\item 
static \hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8c_a9f50310615d41544e16983f80c97c0f0}{web\+\_\+data\+\_\+error\+\_\+callback} (void $\ast$arg, \hyperlink{earth2wireframe_8c_aef44329758059c91c76d334e8fc09700}{int8\+\_\+t} err)
\begin{DoxyCompactList}\small\item\em Network Error callback function. \end{DoxyCompactList}\item 
static \hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8c_a7548202d4a868f3c988014ffb969dee5}{web\+\_\+data\+\_\+connect\+\_\+callback} (\hyperlink{web_8h_a6dae30cd245bde804cf3e2c09e39a4b6}{espconn\+\_\+t} $\ast$conn)
\begin{DoxyCompactList}\small\item\em incomming connection setup callbacks \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8c_a4abb48d4494fe24bdb3966a30a380f94}{is\+\_\+cgitoken\+\_\+char} (int c)
\begin{DoxyCompactList}\small\item\em test to see if a character is a valid member of the C\+GI token character set C\+GI tokens have the following syntax @ They start with \char`\"{}@\+\_\+\char`\"{} and end with \char`\"{}\+\_\+@\char`\"{} \char`\"{}@\+\_\+\char`\"{} must be first two characters of string May have upper and lower case letters, numbers and \textquotesingle{}-\/\textquotesingle{} \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8c_a1923a5ddca00d254e13a605602f68972}{find\+\_\+cgitoken\+\_\+start} (char $\ast$str)
\begin{DoxyCompactList}\small\item\em Find start of C\+GI token in a string C\+GI tokens have the following syntax @ They start with \char`\"{}@\+\_\+\char`\"{} and end with \char`\"{}\+\_\+@\char`\"{} \char`\"{}@\+\_\+\char`\"{} must be first two characters of string May have upper and lower case letters, numbers and \textquotesingle{}-\/\textquotesingle{} param\mbox{[}in\mbox{]} $\ast$str\+: string to search. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8c_a048ebac3422330a50ba449d817ff49d8}{is\+\_\+cgitoken} (char $\ast$str)
\begin{DoxyCompactList}\small\item\em Does the string have a C\+GI T\+O\+K\+EN at the beginning ? C\+GI tokens have the following syntax @ They start with \char`\"{}@\+\_\+\char`\"{} and end with \char`\"{}\+\_\+@\char`\"{} \char`\"{}@\+\_\+\char`\"{} must be first two characters of string May have upper and lower case letters, numbers and \textquotesingle{}-\/\textquotesingle{}. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} int \hyperlink{web_8c_abfb5be0ab21dfe56bc934a8965154384}{rewrite\+\_\+cgi\+\_\+token} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p, char $\ast$src)
\begin{DoxyCompactList}\small\item\em Replace C\+GI token with C\+GI result C\+GI tokens have the following syntax @ They start with \char`\"{}@\+\_\+\char`\"{} and end with \char`\"{}\+\_\+@\char`\"{} \char`\"{}@\+\_\+\char`\"{} must be first two characters of string May have upper and lower case letters, numbers and \textquotesingle{}-\/\textquotesingle{}. \end{DoxyCompactList}\item 
static \hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8c_a83e96b326e5d0ef41c95a83d510705dc}{process\+\_\+requests} (\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$p)
\begin{DoxyCompactList}\small\item\em Process an incoming H\+T\+TP request. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8c_ab058978d28bd1522323798b56d903176}{web\+\_\+task} ()
\begin{DoxyCompactList}\small\item\em Process A\+LL incoming H\+T\+TP requests. \end{DoxyCompactList}\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8c_aced225563307f62a9832c387fd78a0f8}{web\+\_\+init\+\_\+connections} ()
\item 
\hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} void \hyperlink{web_8c_aa7a1c2f567713688983ddecf9fa0d8d6}{web\+\_\+init} (int port)
\begin{DoxyCompactList}\small\item\em Setup W\+EB server and accept connections. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item 
int \hyperlink{web_8c_a0ba17441c382732ee4172abce4f7b31c}{connections}
\item 
\hyperlink{structwindow}{window} $\ast$ \hyperlink{web_8c_a91a5294702debbeba1acf3cc43784ce9}{winmsg}
\item 
\hyperlink{structwindow}{window} $\ast$ \hyperlink{web_8c_aff6226bcabba958e69ff897ec86a13b2}{wintop}
\item 
\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} $\ast$ \hyperlink{web_8c_a18c3cff4e8a9ff56871f13dfb3cd48ad}{web\+\_\+connections} \mbox{[}\hyperlink{web_8h_a053b7859476cc9867ec62c49e68d3fa1}{M\+A\+X\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+NS}\mbox{]}
\begin{DoxyCompactList}\small\item\em socket buffers for this connection \end{DoxyCompactList}\item 
\hyperlink{web_8h_a6dae30cd245bde804cf3e2c09e39a4b6}{espconn\+\_\+t} \hyperlink{web_8c_a96c7e595cf56145fc95dc2c66ac3930f}{Web\+Conn}
\begin{DoxyCompactList}\small\item\em Master espconn structure of the web server. \end{DoxyCompactList}\item 
static esp\+\_\+tcp \hyperlink{web_8c_a82e626c8ae638c2d59ae0590e5eab381}{Web\+Tcp}
\begin{DoxyCompactList}\small\item\em Master network configuration for the web server. \end{DoxyCompactList}\item 
\hyperlink{structheader__t}{header\+\_\+t} \hyperlink{web_8c_a272852abae296b3cd79f00810f4d2915}{msg\+\_\+headers} \mbox{[}$\,$\mbox{]}
\begin{DoxyCompactList}\small\item\em H\+T\+TP headers we understand. \end{DoxyCompactList}\item 
char $\ast$ \hyperlink{web_8c_a81bbe3cdfc6aad2405aaa9432ae49b92}{http\+\_\+status} \mbox{[}$\,$\mbox{]}
\begin{DoxyCompactList}\small\item\em H\+T\+TP status code messages. \end{DoxyCompactList}\item 
\hyperlink{structmime__t}{mime\+\_\+t} \hyperlink{web_8c_a8239fd1b0c1007f135d8d95e8183981b}{mimes} \mbox{[}$\,$\mbox{]}
\begin{DoxyCompactList}\small\item\em M\+I\+ME types. \end{DoxyCompactList}\item 
static \hyperlink{earth2wireframe_8c_ad0fe97585b8891f5e4f2b9a6426330a4}{M\+E\+M\+S\+P\+A\+CE} \hyperlink{web_8c_a9caaaad7e2fdc8c9f2e927980c57d639}{\+\_\+led} = 0
\begin{DoxyCompactList}\small\item\em Turn on virtual L\+ED. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Small web server for esp8266. 

\begin{DoxyParagraph}{Copyright \copyright{} 2015 Mike Gore, G\+PL License}

\end{DoxyParagraph}
\begin{DoxyParagraph}{You are free to use this code under the terms of G\+PL}
please retain a copy of this notice in any code you use it in.
\end{DoxyParagraph}
This is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This software is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU General Public License for more details.

You should have received a copy of the G\+NU General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. 

\subsection{Macro Definition Documentation}
\index{web.\+c@{web.\+c}!B\+U\+F\+F\+E\+R\+\_\+\+S\+I\+ZE@{B\+U\+F\+F\+E\+R\+\_\+\+S\+I\+ZE}}
\index{B\+U\+F\+F\+E\+R\+\_\+\+S\+I\+ZE@{B\+U\+F\+F\+E\+R\+\_\+\+S\+I\+ZE}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{B\+U\+F\+F\+E\+R\+\_\+\+S\+I\+ZE}{BUFFER_SIZE}}]{\setlength{\rightskip}{0pt plus 5cm}\#define B\+U\+F\+F\+E\+R\+\_\+\+S\+I\+ZE~1000}\hypertarget{web_8c_a6b20d41d6252e9871430c242cb1a56e7}{}\label{web_8c_a6b20d41d6252e9871430c242cb1a56e7}


max size of read/write socket buffers Note\+: reducing this size below 1500 will slow down transfer a great deal 



Definition at line 43 of file web.\+c.



Referenced by rwbuf\+\_\+create().

\index{web.\+c@{web.\+c}!C\+G\+I\+\_\+\+T\+O\+K\+E\+N\+\_\+\+S\+I\+ZE@{C\+G\+I\+\_\+\+T\+O\+K\+E\+N\+\_\+\+S\+I\+ZE}}
\index{C\+G\+I\+\_\+\+T\+O\+K\+E\+N\+\_\+\+S\+I\+ZE@{C\+G\+I\+\_\+\+T\+O\+K\+E\+N\+\_\+\+S\+I\+ZE}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{C\+G\+I\+\_\+\+T\+O\+K\+E\+N\+\_\+\+S\+I\+ZE}{CGI_TOKEN_SIZE}}]{\setlength{\rightskip}{0pt plus 5cm}\#define C\+G\+I\+\_\+\+T\+O\+K\+E\+N\+\_\+\+S\+I\+ZE~128}\hypertarget{web_8c_a94854d8a062d4159f7610f11f0f7baf1}{}\label{web_8c_a94854d8a062d4159f7610f11f0f7baf1}


max size of C\+GI token 



Definition at line 40 of file web.\+c.

\index{web.\+c@{web.\+c}!M\+A\+X\+\_\+\+M\+SG@{M\+A\+X\+\_\+\+M\+SG}}
\index{M\+A\+X\+\_\+\+M\+SG@{M\+A\+X\+\_\+\+M\+SG}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{M\+A\+X\+\_\+\+M\+SG}{MAX_MSG}}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\+A\+X\+\_\+\+M\+SG~1024}\hypertarget{web_8c_aa24597a54a085c6c2c33b64138f09eff}{}\label{web_8c_aa24597a54a085c6c2c33b64138f09eff}


max size of E\+R\+R\+O\+R/\+R\+E\+D\+I\+R\+E\+C\+T/\+S\+T\+A\+T\+US Message buffer 



Definition at line 38 of file web.\+c.



Referenced by html\+\_\+msg().



\subsection{Function Documentation}
\index{web.\+c@{web.\+c}!\+\_\+write\+\_\+byte\+\_\+fn@{\+\_\+write\+\_\+byte\+\_\+fn}}
\index{\+\_\+write\+\_\+byte\+\_\+fn@{\+\_\+write\+\_\+byte\+\_\+fn}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{\+\_\+write\+\_\+byte\+\_\+fn(struct \+\_\+printf\+\_\+t $\ast$pr, char c)}{_write_byte_fn(struct _printf_t *pr, char c)}}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf M\+E\+M\+S\+P\+A\+CE} void \+\_\+write\+\_\+byte\+\_\+fn (
\begin{DoxyParamCaption}
\item[{struct {\bf \+\_\+printf\+\_\+t} $\ast$}]{pr, }
\item[{char}]{c}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}\hypertarget{web_8c_a620628fcf72ac4e4d0228ff38d31bbd1}{}\label{web_8c_a620628fcf72ac4e4d0228ff38d31bbd1}


low level vsock\+\_\+printf function that calls socket write\+\_\+byte 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$pr} & printf structure and user buffer for this socket \\
\hline
\mbox{\tt in}  & {\em c} & character to write \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 790 of file web.\+c.



Referenced by vsock\+\_\+printf().

\index{web.\+c@{web.\+c}!arg\+\_\+name@{arg\+\_\+name}}
\index{arg\+\_\+name@{arg\+\_\+name}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{arg\+\_\+name(hinfo\+\_\+t $\ast$hi)}{arg_name(hinfo_t *hi)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} char$\ast$ arg\+\_\+name (
\begin{DoxyParamCaption}
\item[{{\bf hinfo\+\_\+t} $\ast$}]{hi}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a35cc0d5292df6d1df5cf3ea63e44d0b7}{}\label{web_8c_a35cc0d5292df6d1df5cf3ea63e44d0b7}


Return the argument name for current argument. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$hi} & \hyperlink{structhinfo__t}{hinfo\+\_\+t} structure with arguments \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
argument name 
\end{DoxyReturn}


Definition at line 1298 of file web.\+c.



Referenced by http\+\_\+value(), and parse\+\_\+http\+\_\+request().

\index{web.\+c@{web.\+c}!arg\+\_\+value@{arg\+\_\+value}}
\index{arg\+\_\+value@{arg\+\_\+value}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{arg\+\_\+value(hinfo\+\_\+t $\ast$hi)}{arg_value(hinfo_t *hi)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} char$\ast$ arg\+\_\+value (
\begin{DoxyParamCaption}
\item[{{\bf hinfo\+\_\+t} $\ast$}]{hi}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a12e823b35aaf4392e282d39057f45eb8}{}\label{web_8c_a12e823b35aaf4392e282d39057f45eb8}


Return the argument value for current argument. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$hi} & \hyperlink{structhinfo__t}{hinfo\+\_\+t} structure with arguments \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
argument value 
\end{DoxyReturn}


Definition at line 1346 of file web.\+c.



Referenced by http\+\_\+value(), and parse\+\_\+http\+\_\+request().

\index{web.\+c@{web.\+c}!create\+\_\+connection@{create\+\_\+connection}}
\index{create\+\_\+connection@{create\+\_\+connection}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{create\+\_\+connection(espconn\+\_\+t $\ast$conn)}{create_connection(espconn_t *conn)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} {\bf rwbuf\+\_\+t}$\ast$ create\+\_\+connection (
\begin{DoxyParamCaption}
\item[{{\bf espconn\+\_\+t} $\ast$}]{conn}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_aef2853a921eb49702f064eaa925b16e1}{}\label{web_8c_aef2853a921eb49702f064eaa925b16e1}


Allocate read/write socket buffers and add it to the working pool. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em conn} & espconn pointer for this connection \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer to created structure 
\end{DoxyReturn}


Definition at line 669 of file web.\+c.



Referenced by web\+\_\+data\+\_\+connect\+\_\+callback().

\index{web.\+c@{web.\+c}!delete\+\_\+connection@{delete\+\_\+connection}}
\index{delete\+\_\+connection@{delete\+\_\+connection}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{delete\+\_\+connection(rwbuf\+\_\+t $\ast$p)}{delete_connection(rwbuf_t *p)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int delete\+\_\+connection (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a7f82234178b3e152072e979c17b40af2}{}\label{web_8c_a7f82234178b3e152072e979c17b40af2}


Delete our main connection structure and connection buffers. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer \\
\hline
\end{DoxyParams}


Definition at line 715 of file web.\+c.



Referenced by web\+\_\+data\+\_\+disconnect\+\_\+callback().

\index{web.\+c@{web.\+c}!display\+\_\+ipv4@{display\+\_\+ipv4}}
\index{display\+\_\+ipv4@{display\+\_\+ipv4}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{display\+\_\+ipv4(char $\ast$msg, uint8\+\_\+t $\ast$ip, int port)}{display_ipv4(char *msg, uint8_t *ip, int port)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void display\+\_\+ipv4 (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{msg, }
\item[{{\bf uint8\+\_\+t} $\ast$}]{ip, }
\item[{int}]{port}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a89dceabcd370d352c3efed0e689fd551}{}\label{web_8c_a89dceabcd370d352c3efed0e689fd551}


Display I\+P\+V4 address. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em msg} & user supplied message \\
\hline
\mbox{\tt in}  & {\em ip} & IP address as uint8\+\_\+t \mbox{[}4\mbox{]} \\
\hline
\mbox{\tt in}  & {\em port} & Port number \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 470 of file web.\+c.



Referenced by delete\+\_\+connection(), find\+\_\+connection(), web\+\_\+data\+\_\+connect\+\_\+callback(), web\+\_\+data\+\_\+disconnect\+\_\+callback(), web\+\_\+data\+\_\+error\+\_\+callback(), web\+\_\+data\+\_\+receive\+\_\+callback(), and web\+\_\+data\+\_\+sent\+\_\+callback().

\index{web.\+c@{web.\+c}!file\+\_\+type@{file\+\_\+type}}
\index{file\+\_\+type@{file\+\_\+type}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{file\+\_\+type(char $\ast$name)}{file_type(char *name)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int file\+\_\+type (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{name}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_aec5e03bbb08e40de50b3da6413e26931}{}\label{web_8c_aec5e03bbb08e40de50b3da6413e26931}


Determin mimetype using file name extension. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$name} & name to test \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
index into mimetype table 
\end{DoxyReturn}


Definition at line 996 of file web.\+c.

\index{web.\+c@{web.\+c}!find\+\_\+cgitoken\+\_\+start@{find\+\_\+cgitoken\+\_\+start}}
\index{find\+\_\+cgitoken\+\_\+start@{find\+\_\+cgitoken\+\_\+start}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{find\+\_\+cgitoken\+\_\+start(char $\ast$str)}{find_cgitoken_start(char *str)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int find\+\_\+cgitoken\+\_\+start (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{str}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a1923a5ddca00d254e13a605602f68972}{}\label{web_8c_a1923a5ddca00d254e13a605602f68972}


Find start of C\+GI token in a string C\+GI tokens have the following syntax @ They start with \char`\"{}@\+\_\+\char`\"{} and end with \char`\"{}\+\_\+@\char`\"{} \char`\"{}@\+\_\+\char`\"{} must be first two characters of string May have upper and lower case letters, numbers and \textquotesingle{}-\/\textquotesingle{} param\mbox{[}in\mbox{]} $\ast$str\+: string to search. 

\begin{DoxyReturn}{Returns}
offset of start of token, or -\/1 if not found 
\end{DoxyReturn}


Definition at line 2024 of file web.\+c.

\index{web.\+c@{web.\+c}!find\+\_\+connection@{find\+\_\+connection}}
\index{find\+\_\+connection@{find\+\_\+connection}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{find\+\_\+connection(espconn\+\_\+t $\ast$conn, int $\ast$index, char $\ast$msg)}{find_connection(espconn_t *conn, int *index, char *msg)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} {\bf rwbuf\+\_\+t}$\ast$ find\+\_\+connection (
\begin{DoxyParamCaption}
\item[{{\bf espconn\+\_\+t} $\ast$}]{conn, }
\item[{int $\ast$}]{index, }
\item[{char $\ast$}]{msg}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a63cfcb009066f483330ec359b8493fbe}{}\label{web_8c_a63cfcb009066f483330ec359b8493fbe}


Find a read/write socket buffer for an espconn connection. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em conn} & espconn pointer for this connection \\
\hline
\mbox{\tt in}  & {\em $\ast$index} & return index into pool of \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} connections \\
\hline
\mbox{\tt in}  & {\em $\ast$msg} & user debug message \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer to found connection with $\ast$index set, or N\+U\+LL with $\ast$index == -\/1 on failure 
\end{DoxyReturn}


Definition at line 590 of file web.\+c.



Referenced by web\+\_\+data\+\_\+disconnect\+\_\+callback(), web\+\_\+data\+\_\+error\+\_\+callback(), web\+\_\+data\+\_\+receive\+\_\+callback(), and web\+\_\+data\+\_\+sent\+\_\+callback().

\index{web.\+c@{web.\+c}!first\+\_\+arg@{first\+\_\+arg}}
\index{first\+\_\+arg@{first\+\_\+arg}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{first\+\_\+arg(hinfo\+\_\+t $\ast$hi)}{first_arg(hinfo_t *hi)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} char$\ast$ first\+\_\+arg (
\begin{DoxyParamCaption}
\item[{{\bf hinfo\+\_\+t} $\ast$}]{hi}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_afb148431af519ffd7c3191ed3edd4d50}{}\label{web_8c_afb148431af519ffd7c3191ed3edd4d50}


Find first P\+O\+S\+T/\+G\+ET argument. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$hi} & \hyperlink{structhinfo__t}{hinfo\+\_\+t} structure with arguments \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
argument value pair 
\end{DoxyReturn}


Definition at line 1235 of file web.\+c.



Referenced by http\+\_\+value(), and parse\+\_\+http\+\_\+request().

\index{web.\+c@{web.\+c}!html\+\_\+head@{html\+\_\+head}}
\index{html\+\_\+head@{html\+\_\+head}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{html\+\_\+head(rwbuf\+\_\+t $\ast$p, int status, char type, int len)}{html_head(rwbuf_t *p, int status, char type, int len)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void html\+\_\+head (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p, }
\item[{int}]{status, }
\item[{char}]{type, }
\item[{int}]{len}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_acfdd7b32cc9e6b5214ddbf8120a9ed7b}{}\label{web_8c_acfdd7b32cc9e6b5214ddbf8120a9ed7b}


Write H\+T\+TP Contenet-\/\+Type/\+Content-\/\+Length header. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer to socket buffer \\
\hline
\mbox{\tt in}  & {\em status} & html status message index \\
\hline
\mbox{\tt in}  & {\em type} & mimetype index \\
\hline
\mbox{\tt in}  & {\em len} & length of message \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 1518 of file web.\+c.

\index{web.\+c@{web.\+c}!html\+\_\+msg@{html\+\_\+msg}}
\index{html\+\_\+msg@{html\+\_\+msg}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{html\+\_\+msg(rwbuf\+\_\+t $\ast$p, int status, char type, char $\ast$fmt,...)}{html_msg(rwbuf_t *p, int status, char type, char *fmt,...)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int html\+\_\+msg (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p, }
\item[{int}]{status, }
\item[{char}]{type, }
\item[{char $\ast$}]{fmt, }
\item[{}]{...}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a5cb82637d6d97812355aaa7a7fb4ccbe}{}\label{web_8c_a5cb82637d6d97812355aaa7a7fb4ccbe}


Send an H\+T\+ML status message to socket. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em p} & socket buffer structure \\
\hline
\mbox{\tt in}  & {\em status} & index into http\+\_\+status table \\
\hline
\mbox{\tt in}  & {\em type} & mime type index \\
\hline
\mbox{\tt in}  & {\em fmt} & printf format string \\
\hline
\mbox{\tt in}  & {\em ...} & list of arguments \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
bytes written, 0 on wrror 
\end{DoxyReturn}


Definition at line 853 of file web.\+c.

\index{web.\+c@{web.\+c}!html\+\_\+status@{html\+\_\+status}}
\index{html\+\_\+status@{html\+\_\+status}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{html\+\_\+status(int status)}{html_status(int status)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} char$\ast$ html\+\_\+status (
\begin{DoxyParamCaption}
\item[{int}]{status}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_aeebdbab253618d52a35054978fe4bb0e}{}\label{web_8c_aeebdbab253618d52a35054978fe4bb0e}


Convert html status into string using http\+\_\+status table. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em status} & html status number \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
http\+\_\+status entry mathing status, or 500 Internal Server Error 
\end{DoxyReturn}


Definition at line 1030 of file web.\+c.



Referenced by html\+\_\+head(), and html\+\_\+msg().

\index{web.\+c@{web.\+c}!http\+\_\+value@{http\+\_\+value}}
\index{http\+\_\+value@{http\+\_\+value}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{http\+\_\+value(hinfo\+\_\+t $\ast$hi, char $\ast$str)}{http_value(hinfo_t *hi, char *str)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} char$\ast$ http\+\_\+value (
\begin{DoxyParamCaption}
\item[{{\bf hinfo\+\_\+t} $\ast$}]{hi, }
\item[{char $\ast$}]{str}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a142e7c44af77016bb329676f4466da7e}{}\label{web_8c_a142e7c44af77016bb329676f4466da7e}


Lookup and argument name and return its value. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$hi} & \hyperlink{structhinfo__t}{hinfo\+\_\+t} structure with arguments \\
\hline
\mbox{\tt in}  & {\em $\ast$str} & string to lookup \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
argument value 
\end{DoxyReturn}


Definition at line 1422 of file web.\+c.

\index{web.\+c@{web.\+c}!init\+\_\+hinfo@{init\+\_\+hinfo}}
\index{init\+\_\+hinfo@{init\+\_\+hinfo}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{init\+\_\+hinfo(hinfo\+\_\+t $\ast$hi)}{init_hinfo(hinfo_t *hi)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void init\+\_\+hinfo (
\begin{DoxyParamCaption}
\item[{{\bf hinfo\+\_\+t} $\ast$}]{hi}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a9022b922953aabe534b7b68e6f3a90af}{}\label{web_8c_a9022b922953aabe534b7b68e6f3a90af}
Initilize \hyperlink{structhinfo__t}{hinfo\+\_\+t} structure 
\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$hi} & \hyperlink{structhinfo__t}{hinfo\+\_\+t} structure pointer to initialize \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{structhinfo__t}{hinfo\+\_\+t} structure pointer to initialize 
\end{DoxyReturn}


Definition at line 1055 of file web.\+c.



Referenced by parse\+\_\+http\+\_\+request().

\index{web.\+c@{web.\+c}!is\+\_\+cgitoken@{is\+\_\+cgitoken}}
\index{is\+\_\+cgitoken@{is\+\_\+cgitoken}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{is\+\_\+cgitoken(char $\ast$str)}{is_cgitoken(char *str)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int is\+\_\+cgitoken (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{str}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a048ebac3422330a50ba449d817ff49d8}{}\label{web_8c_a048ebac3422330a50ba449d817ff49d8}


Does the string have a C\+GI T\+O\+K\+EN at the beginning ? C\+GI tokens have the following syntax @ They start with \char`\"{}@\+\_\+\char`\"{} and end with \char`\"{}\+\_\+@\char`\"{} \char`\"{}@\+\_\+\char`\"{} must be first two characters of string May have upper and lower case letters, numbers and \textquotesingle{}-\/\textquotesingle{}. 

/$\ast$$\ast$ \begin{DoxyReturn}{Returns}
size of token or -\/1 on fail 
\end{DoxyReturn}


Definition at line 2051 of file web.\+c.

\index{web.\+c@{web.\+c}!is\+\_\+cgitoken\+\_\+char@{is\+\_\+cgitoken\+\_\+char}}
\index{is\+\_\+cgitoken\+\_\+char@{is\+\_\+cgitoken\+\_\+char}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{is\+\_\+cgitoken\+\_\+char(int c)}{is_cgitoken_char(int c)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int is\+\_\+cgitoken\+\_\+char (
\begin{DoxyParamCaption}
\item[{int}]{c}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a4abb48d4494fe24bdb3966a30a380f94}{}\label{web_8c_a4abb48d4494fe24bdb3966a30a380f94}


test to see if a character is a valid member of the C\+GI token character set C\+GI tokens have the following syntax @ They start with \char`\"{}@\+\_\+\char`\"{} and end with \char`\"{}\+\_\+@\char`\"{} \char`\"{}@\+\_\+\char`\"{} must be first two characters of string May have upper and lower case letters, numbers and \textquotesingle{}-\/\textquotesingle{} 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em c} & character to test \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
1 if the character is a C\+GI token or 0 if not 
\end{DoxyReturn}


Definition at line 1999 of file web.\+c.

\index{web.\+c@{web.\+c}!is\+\_\+header@{is\+\_\+header}}
\index{is\+\_\+header@{is\+\_\+header}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{is\+\_\+header(char $\ast$str, char $\ast$$\ast$p)}{is_header(char *str, char **p)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int is\+\_\+header (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{str, }
\item[{char $\ast$$\ast$}]{p}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_aac0e14d0751e24b7143060600fe7822a}{}\label{web_8c_aac0e14d0751e24b7143060600fe7822a}


Does the string look like a header token with a \textquotesingle{}\+:\textquotesingle{} ? 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$str} & string to test \\
\hline
\mbox{\tt in}  & {\em $\ast$$\ast$p} & string pointer to set on match \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
1 if it looks like a header, otherwise 0 
\end{DoxyReturn}


Definition at line 1451 of file web.\+c.



Referenced by parse\+\_\+http\+\_\+request().

\index{web.\+c@{web.\+c}!led\+\_\+off@{led\+\_\+off}}
\index{led\+\_\+off@{led\+\_\+off}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{led\+\_\+off(int led)}{led_off(int led)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void led\+\_\+off (
\begin{DoxyParamCaption}
\item[{int}]{led}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_aec67a5a0b10a3ad2bbfe81de832ef239}{}\label{web_8c_aec67a5a0b10a3ad2bbfe81de832ef239}


Turn off virtual L\+ED. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em led} & led to turn off \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 384 of file web.\+c.

\index{web.\+c@{web.\+c}!led\+\_\+on@{led\+\_\+on}}
\index{led\+\_\+on@{led\+\_\+on}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{led\+\_\+on(int led)}{led_on(int led)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void led\+\_\+on (
\begin{DoxyParamCaption}
\item[{int}]{led}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_aaaac061db0c7646d5b6c8bdfe3089ae7}{}\label{web_8c_aaaac061db0c7646d5b6c8bdfe3089ae7}


Definition at line 374 of file web.\+c.

\index{web.\+c@{web.\+c}!match\+\_\+headers@{match\+\_\+headers}}
\index{match\+\_\+headers@{match\+\_\+headers}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{match\+\_\+headers(char $\ast$str, char $\ast$$\ast$p)}{match_headers(char *str, char **p)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int match\+\_\+headers (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{str, }
\item[{char $\ast$$\ast$}]{p}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a93274f0048175d7ed429598e951a2c77}{}\label{web_8c_a93274f0048175d7ed429598e951a2c77}


Match G\+E\+T/\+P\+O\+ST message headers. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$str} & string to patch \\
\hline
\mbox{\tt in}  & {\em $\ast$$\ast$p} & points past matched string on sucess \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
header index or -\/1 on no match 
\end{DoxyReturn}


Definition at line 1077 of file web.\+c.



Referenced by parse\+\_\+http\+\_\+request().

\index{web.\+c@{web.\+c}!memgets@{memgets}}
\index{memgets@{memgets}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{memgets(mem\+\_\+t $\ast$p)}{memgets(mem_t *p)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} char$\ast$ memgets (
\begin{DoxyParamCaption}
\item[{{\bf mem\+\_\+t} $\ast$}]{p}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_ad834fe4d9506060f80d873fb20c186d5}{}\label{web_8c_ad834fe4d9506060f80d873fb20c186d5}


Memory gets function We A\+S\+S\+U\+ME we can replace any ~\newline
 with a \textbackslash{}0. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em p} & structure with size and offset used by mem\+\_\+gets() \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to string 
\end{DoxyReturn}


Definition at line 952 of file web.\+c.



Referenced by parse\+\_\+http\+\_\+request().

\index{web.\+c@{web.\+c}!meminit@{meminit}}
\index{meminit@{meminit}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{meminit(mem\+\_\+t $\ast$p, char $\ast$ptr, int size)}{meminit(mem_t *p, char *ptr, int size)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} char$\ast$ meminit (
\begin{DoxyParamCaption}
\item[{{\bf mem\+\_\+t} $\ast$}]{p, }
\item[{char $\ast$}]{ptr, }
\item[{int}]{size}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a2ea8a8e37ac5c7099311e4d9cdb77efb}{}\label{web_8c_a2ea8a8e37ac5c7099311e4d9cdb77efb}


in memory memory gets function 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em p} & structure with size and offset used by mem\+\_\+gets() \\
\hline
\mbox{\tt in}  & {\em ptr} & start of memory area \\
\hline
\mbox{\tt in}  & {\em size} & size of memory area \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to start of memory area (ptr) 
\end{DoxyReturn}


Definition at line 933 of file web.\+c.



Referenced by parse\+\_\+http\+\_\+request().

\index{web.\+c@{web.\+c}!mime\+\_\+type@{mime\+\_\+type}}
\index{mime\+\_\+type@{mime\+\_\+type}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{mime\+\_\+type(int type)}{mime_type(int type)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} char$\ast$ mime\+\_\+type (
\begin{DoxyParamCaption}
\item[{int}]{type}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_ae16ca93f35df1d6e5040aa464fec44ab}{}\label{web_8c_ae16ca93f35df1d6e5040aa464fec44ab}


return strung pointer for mime type index 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em type} & index into mim\+\_\+type table \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to string, if out of range uses index P\+T\+Y\+P\+E\+\_\+\+E\+RR 
\end{DoxyReturn}


Definition at line 983 of file web.\+c.



Referenced by html\+\_\+head(), and html\+\_\+msg().

\index{web.\+c@{web.\+c}!next\+\_\+arg@{next\+\_\+arg}}
\index{next\+\_\+arg@{next\+\_\+arg}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{next\+\_\+arg(hinfo\+\_\+t $\ast$hi)}{next_arg(hinfo_t *hi)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} char$\ast$ next\+\_\+arg (
\begin{DoxyParamCaption}
\item[{{\bf hinfo\+\_\+t} $\ast$}]{hi}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_ac2b1c83b2901da05a13fbc48e9c9f030}{}\label{web_8c_ac2b1c83b2901da05a13fbc48e9c9f030}


Find next P\+O\+S\+T/\+G\+ET argument We have to skip a name and a value. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$hi} & \hyperlink{structhinfo__t}{hinfo\+\_\+t} structure with arguments \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
argument value pair 
\end{DoxyReturn}


Definition at line 1247 of file web.\+c.



Referenced by http\+\_\+value(), and parse\+\_\+http\+\_\+request().

\index{web.\+c@{web.\+c}!nextbreak@{nextbreak}}
\index{nextbreak@{nextbreak}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{nextbreak(char $\ast$ptr)}{nextbreak(char *ptr)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} char$\ast$ nextbreak (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{ptr}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a1723d513f866e03e8195adf0139b1603}{}\label{web_8c_a1723d513f866e03e8195adf0139b1603}


Find next space or ? character. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$ptr} & string to search \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
first space or ? character 
\end{DoxyReturn}


Definition at line 1476 of file web.\+c.



Referenced by parse\+\_\+http\+\_\+request().

\index{web.\+c@{web.\+c}!parse\+\_\+http\+\_\+request@{parse\+\_\+http\+\_\+request}}
\index{parse\+\_\+http\+\_\+request@{parse\+\_\+http\+\_\+request}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{parse\+\_\+http\+\_\+request(rwbuf\+\_\+t $\ast$p, hinfo\+\_\+t $\ast$hi)}{parse_http_request(rwbuf_t *p, hinfo_t *hi)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int parse\+\_\+http\+\_\+request (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p, }
\item[{{\bf hinfo\+\_\+t} $\ast$}]{hi}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a574da7d2e02f16c3ff0727061b90c46c}{}\label{web_8c_a574da7d2e02f16c3ff0727061b90c46c}


Get arguments for a G\+ET or P\+O\+ST request. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer to socket buffer \\
\hline
\mbox{\tt in}  & {\em $\ast$hi} & header structure of parsed result \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on error, 1 on success 
\end{DoxyReturn}
We must respond with Connection\+: keep-\/alive now 

Definition at line 1535 of file web.\+c.

\index{web.\+c@{web.\+c}!process\+\_\+args@{process\+\_\+args}}
\index{process\+\_\+args@{process\+\_\+args}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{process\+\_\+args(hinfo\+\_\+t $\ast$hi, char $\ast$ptr)}{process_args(hinfo_t *hi, char *ptr)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} char$\ast$ process\+\_\+args (
\begin{DoxyParamCaption}
\item[{{\bf hinfo\+\_\+t} $\ast$}]{hi, }
\item[{char $\ast$}]{ptr}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_ab29b4d9382acde5a32fa0aad1068c38b}{}\label{web_8c_ab29b4d9382acde5a32fa0aad1068c38b}


Process G\+ET argments or P\+O\+ST message name/value data. H\+T\+ML encoding is done in place often reducting the size of the result. Convert name=value pairs into null terminated strings. Names and values are each terminated with an E\+OS by replaceing \textquotesingle{}?\textquotesingle{}, \textquotesingle{}\&\textquotesingle{}, \textquotesingle{}=\textquotesingle{} characters seen while scaning. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$hi} & \hyperlink{structhinfo__t}{hinfo\+\_\+t} structure to fill \\
\hline
\mbox{\tt in}  & {\em $\ast$ptr} & G\+ET arguments or P\+UT message body. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
$\ast$ptr pointer that points to just past the header area. 
\end{DoxyReturn}


Definition at line 1116 of file web.\+c.



Referenced by parse\+\_\+http\+\_\+request().

\index{web.\+c@{web.\+c}!process\+\_\+requests@{process\+\_\+requests}}
\index{process\+\_\+requests@{process\+\_\+requests}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{process\+\_\+requests(rwbuf\+\_\+t $\ast$p)}{process_requests(rwbuf_t *p)}}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf M\+E\+M\+S\+P\+A\+CE} void process\+\_\+requests (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}\hypertarget{web_8c_a83e96b326e5d0ef41c95a83d510705dc}{}\label{web_8c_a83e96b326e5d0ef41c95a83d510705dc}


Process an incoming H\+T\+TP request. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer to socket buffer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}
F\+I\+X\+ME if we want to support keep-\/alive we have to change this 

Definition at line 2137 of file web.\+c.

\index{web.\+c@{web.\+c}!rewrite\+\_\+cgi\+\_\+token@{rewrite\+\_\+cgi\+\_\+token}}
\index{rewrite\+\_\+cgi\+\_\+token@{rewrite\+\_\+cgi\+\_\+token}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{rewrite\+\_\+cgi\+\_\+token(rwbuf\+\_\+t $\ast$p, char $\ast$src)}{rewrite_cgi_token(rwbuf_t *p, char *src)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int rewrite\+\_\+cgi\+\_\+token (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p, }
\item[{char $\ast$}]{src}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_abfb5be0ab21dfe56bc934a8965154384}{}\label{web_8c_abfb5be0ab21dfe56bc934a8965154384}


Replace C\+GI token with C\+GI result C\+GI tokens have the following syntax @ They start with \char`\"{}@\+\_\+\char`\"{} and end with \char`\"{}\+\_\+@\char`\"{} \char`\"{}@\+\_\+\char`\"{} must be first two characters of string May have upper and lower case letters, numbers and \textquotesingle{}-\/\textquotesingle{}. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$p} & socket stream \\
\hline
\mbox{\tt in}  & {\em $\ast$str} & string with token, example @ \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
length of replaced text or 0 if no C\+GI handler was matched 
\end{DoxyReturn}


Definition at line 2093 of file web.\+c.

\index{web.\+c@{web.\+c}!rwbuf\+\_\+create@{rwbuf\+\_\+create}}
\index{rwbuf\+\_\+create@{rwbuf\+\_\+create}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{rwbuf\+\_\+create()}{rwbuf_create()}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} {\bf rwbuf\+\_\+t}$\ast$ rwbuf\+\_\+create (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a333e54d833af007aa20f3ae18e260c38}{}\label{web_8c_a333e54d833af007aa20f3ae18e260c38}


Create socket read/write buffer for a connection. 

\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 526 of file web.\+c.



Referenced by create\+\_\+connection().

\index{web.\+c@{web.\+c}!rwbuf\+\_\+delete@{rwbuf\+\_\+delete}}
\index{rwbuf\+\_\+delete@{rwbuf\+\_\+delete}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{rwbuf\+\_\+delete(rwbuf\+\_\+t $\ast$p)}{rwbuf_delete(rwbuf_t *p)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void rwbuf\+\_\+delete (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_af089b318dcc1ebbec17ae7392a19e457}{}\label{web_8c_af089b318dcc1ebbec17ae7392a19e457}


Delete socket read/write buffers. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer to buffer to delete \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 487 of file web.\+c.



Referenced by delete\+\_\+connection(), and rwbuf\+\_\+create().

\index{web.\+c@{web.\+c}!rwbuf\+\_\+rinit@{rwbuf\+\_\+rinit}}
\index{rwbuf\+\_\+rinit@{rwbuf\+\_\+rinit}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{rwbuf\+\_\+rinit(rwbuf\+\_\+t $\ast$p)}{rwbuf_rinit(rwbuf_t *p)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void rwbuf\+\_\+rinit (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_ac827567ee25b284c2992fed88249ab96}{}\label{web_8c_ac827567ee25b284c2992fed88249ab96}


Initialize socket read status and read index. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 439 of file web.\+c.



Referenced by rwbuf\+\_\+create(), rwbuf\+\_\+delete(), and web\+\_\+data\+\_\+receive\+\_\+callback().

\index{web.\+c@{web.\+c}!rwbuf\+\_\+winit@{rwbuf\+\_\+winit}}
\index{rwbuf\+\_\+winit@{rwbuf\+\_\+winit}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{rwbuf\+\_\+winit(rwbuf\+\_\+t $\ast$p)}{rwbuf_winit(rwbuf_t *p)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void rwbuf\+\_\+winit (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a6a137266340baece84e055b2d49cd0c2}{}\label{web_8c_a6a137266340baece84e055b2d49cd0c2}


Initialize socket send status and write index. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 453 of file web.\+c.



Referenced by rwbuf\+\_\+create(), rwbuf\+\_\+delete(), and web\+\_\+data\+\_\+sent\+\_\+callback().

\index{web.\+c@{web.\+c}!sock\+\_\+printf@{sock\+\_\+printf}}
\index{sock\+\_\+printf@{sock\+\_\+printf}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{sock\+\_\+printf(rwbuf\+\_\+t $\ast$p, const char $\ast$fmt,...)}{sock_printf(rwbuf_t *p, const char *fmt,...)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int sock\+\_\+printf (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p, }
\item[{const char $\ast$}]{fmt, }
\item[{}]{...}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a38a7c7d1f5222edff77e9a7a20195696}{}\label{web_8c_a38a7c7d1f5222edff77e9a7a20195696}


sock\+\_\+printf function 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em p} & socket buffer structure \\
\hline
\mbox{\tt in}  & {\em fmt} & printf format string \\
\hline
\mbox{\tt in}  & {\em ...} & list of arguments \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
bytes written 
\end{DoxyReturn}


Definition at line 830 of file web.\+c.



Referenced by html\+\_\+head().

\index{web.\+c@{web.\+c}!tcp\+\_\+accept@{tcp\+\_\+accept}}
\index{tcp\+\_\+accept@{tcp\+\_\+accept}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{tcp\+\_\+accept(espconn\+\_\+t $\ast$esp\+\_\+config, esp\+\_\+tcp $\ast$esp\+\_\+tcp\+\_\+config, uint16\+\_\+t port, void($\ast$connect\+\_\+callback)(struct espconn $\ast$))}{tcp_accept(espconn_t *esp_config, esp_tcp *esp_tcp_config, uint16_t port, void(*connect_callback)(struct espconn *))}}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf M\+E\+M\+S\+P\+A\+CE} void tcp\+\_\+accept (
\begin{DoxyParamCaption}
\item[{{\bf espconn\+\_\+t} $\ast$}]{esp\+\_\+config, }
\item[{esp\+\_\+tcp $\ast$}]{esp\+\_\+tcp\+\_\+config, }
\item[{{\bf uint16\+\_\+t}}]{port, }
\item[{void($\ast$)(struct espconn $\ast$)}]{connect\+\_\+callback}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}\hypertarget{web_8c_a6415f4715cb5cd52ecca2dce79906bcd}{}\label{web_8c_a6415f4715cb5cd52ecca2dce79906bcd}


Accept an incomming connection, setup connect\+\_\+callback. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$esp\+\_\+config} & E\+S\+P8266 network type an mode configuration structure \\
\hline
\mbox{\tt in}  & {\em $\ast$esp\+\_\+tcp\+\_\+config} & network protocol structure \\
\hline
\mbox{\tt in}  & {\em port} & network port to listen on \\
\hline
\mbox{\tt in}  & {\em connect\+\_\+callback} & connection callback function pointer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 400 of file web.\+c.

\index{web.\+c@{web.\+c}!u5toa@{u5toa}}
\index{u5toa@{u5toa}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{u5toa(char $\ast$ptr, uint16\+\_\+t num)}{u5toa(char *ptr, uint16_t num)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void u5toa (
\begin{DoxyParamCaption}
\item[{char $\ast$}]{ptr, }
\item[{{\bf uint16\+\_\+t}}]{num}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a099953c3f11ff53e89c99b0be5212b70}{}\label{web_8c_a099953c3f11ff53e89c99b0be5212b70}


Print a decimal number into a string without an E\+OS. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$ptr} & buffer to write number to \\
\hline
\mbox{\tt in}  & {\em num} & number to convet \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 1497 of file web.\+c.



Referenced by html\+\_\+msg().

\index{web.\+c@{web.\+c}!vsock\+\_\+printf@{vsock\+\_\+printf}}
\index{vsock\+\_\+printf@{vsock\+\_\+printf}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{vsock\+\_\+printf(rwbuf\+\_\+t $\ast$p, const char $\ast$fmt, va\+\_\+list va)}{vsock_printf(rwbuf_t *p, const char *fmt, va_list va)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int vsock\+\_\+printf (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p, }
\item[{const char $\ast$}]{fmt, }
\item[{va\+\_\+list}]{va}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a912affa80386fb06e19c3ce5342701f5}{}\label{web_8c_a912affa80386fb06e19c3ce5342701f5}


vsock\+\_\+printf function 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em p} & socket buffer structure \\
\hline
\mbox{\tt in}  & {\em fmt} & printf format string \\
\hline
\mbox{\tt in}  & {\em va} & va\+\_\+list of arguments \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
bytes written 
\end{DoxyReturn}


Definition at line 808 of file web.\+c.



Referenced by sock\+\_\+printf().

\index{web.\+c@{web.\+c}!wait\+\_\+send@{wait\+\_\+send}}
\index{wait\+\_\+send@{wait\+\_\+send}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{wait\+\_\+send(rwbuf\+\_\+t $\ast$p)}{wait_send(rwbuf_t *p)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int wait\+\_\+send (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a6b59ca0b6eea0b246eb56ae2b37ee2d8}{}\label{web_8c_a6b59ca0b6eea0b246eb56ae2b37ee2d8}


Wait for buffer to send for this connection If write\+\_\+buffer sending flag is set then wait for it to clear. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer for this socket buffer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
sent buffer size or -\/1 on error 
\end{DoxyReturn}


Definition at line 195 of file web.\+c.



Referenced by write\+\_\+buffer(), and write\+\_\+flush().

\index{web.\+c@{web.\+c}!web\+\_\+data\+\_\+connect\+\_\+callback@{web\+\_\+data\+\_\+connect\+\_\+callback}}
\index{web\+\_\+data\+\_\+connect\+\_\+callback@{web\+\_\+data\+\_\+connect\+\_\+callback}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{web\+\_\+data\+\_\+connect\+\_\+callback(espconn\+\_\+t $\ast$conn)}{web_data_connect_callback(espconn_t *conn)}}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf M\+E\+M\+S\+P\+A\+CE} void web\+\_\+data\+\_\+connect\+\_\+callback (
\begin{DoxyParamCaption}
\item[{{\bf espconn\+\_\+t} $\ast$}]{conn}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}\hypertarget{web_8c_a7548202d4a868f3c988014ffb969dee5}{}\label{web_8c_a7548202d4a868f3c988014ffb969dee5}


incomming connection setup callbacks 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$conn} & espconn structure pointer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 1928 of file web.\+c.

\index{web.\+c@{web.\+c}!web\+\_\+data\+\_\+disconnect\+\_\+callback@{web\+\_\+data\+\_\+disconnect\+\_\+callback}}
\index{web\+\_\+data\+\_\+disconnect\+\_\+callback@{web\+\_\+data\+\_\+disconnect\+\_\+callback}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{web\+\_\+data\+\_\+disconnect\+\_\+callback(void $\ast$arg)}{web_data_disconnect_callback(void *arg)}}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf M\+E\+M\+S\+P\+A\+CE} void web\+\_\+data\+\_\+disconnect\+\_\+callback (
\begin{DoxyParamCaption}
\item[{void $\ast$}]{arg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}\hypertarget{web_8c_af1da928cd361e8d3135aa1ce10da1773}{}\label{web_8c_af1da928cd361e8d3135aa1ce10da1773}


Network disconnect callback function. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$arg} & connection pointer \\
\hline
\end{DoxyParams}


Definition at line 1854 of file web.\+c.



Referenced by web\+\_\+data\+\_\+connect\+\_\+callback().

\index{web.\+c@{web.\+c}!web\+\_\+data\+\_\+error\+\_\+callback@{web\+\_\+data\+\_\+error\+\_\+callback}}
\index{web\+\_\+data\+\_\+error\+\_\+callback@{web\+\_\+data\+\_\+error\+\_\+callback}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{web\+\_\+data\+\_\+error\+\_\+callback(void $\ast$arg, int8\+\_\+t err)}{web_data_error_callback(void *arg, int8_t err)}}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf M\+E\+M\+S\+P\+A\+CE} void web\+\_\+data\+\_\+error\+\_\+callback (
\begin{DoxyParamCaption}
\item[{void $\ast$}]{arg, }
\item[{{\bf int8\+\_\+t}}]{err}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}\hypertarget{web_8c_a9f50310615d41544e16983f80c97c0f0}{}\label{web_8c_a9f50310615d41544e16983f80c97c0f0}


Network Error callback function. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$arg} & connection pointer F\+I\+X\+ME T\+O\+DO -\/ we just disconnect on error \\
\hline
\end{DoxyParams}


Definition at line 1895 of file web.\+c.



Referenced by web\+\_\+data\+\_\+connect\+\_\+callback().

\index{web.\+c@{web.\+c}!web\+\_\+data\+\_\+receive\+\_\+callback@{web\+\_\+data\+\_\+receive\+\_\+callback}}
\index{web\+\_\+data\+\_\+receive\+\_\+callback@{web\+\_\+data\+\_\+receive\+\_\+callback}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{web\+\_\+data\+\_\+receive\+\_\+callback(void $\ast$arg, char $\ast$data, unsigned short length)}{web_data_receive_callback(void *arg, char *data, unsigned short length)}}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf M\+E\+M\+S\+P\+A\+CE} void web\+\_\+data\+\_\+receive\+\_\+callback (
\begin{DoxyParamCaption}
\item[{void $\ast$}]{arg, }
\item[{char $\ast$}]{data, }
\item[{unsigned short}]{length}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}\hypertarget{web_8c_a874f47f0da9642a0afb800adaac00c7f}{}\label{web_8c_a874f47f0da9642a0afb800adaac00c7f}


Network receive callback function. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$arg} & connection pointer \\
\hline
\mbox{\tt in}  & {\em $\ast$data} & Data received \\
\hline
\mbox{\tt in}  & {\em length} & Length of data received \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 1735 of file web.\+c.



Referenced by web\+\_\+data\+\_\+connect\+\_\+callback().

\index{web.\+c@{web.\+c}!web\+\_\+data\+\_\+sent\+\_\+callback@{web\+\_\+data\+\_\+sent\+\_\+callback}}
\index{web\+\_\+data\+\_\+sent\+\_\+callback@{web\+\_\+data\+\_\+sent\+\_\+callback}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{web\+\_\+data\+\_\+sent\+\_\+callback(void $\ast$arg)}{web_data_sent_callback(void *arg)}}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf M\+E\+M\+S\+P\+A\+CE} void web\+\_\+data\+\_\+sent\+\_\+callback (
\begin{DoxyParamCaption}
\item[{void $\ast$}]{arg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}\hypertarget{web_8c_a4bbedae551d7c3d1f09488e75a86ccdf}{}\label{web_8c_a4bbedae551d7c3d1f09488e75a86ccdf}


Network sent callback function. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$arg} & connection pointer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 1810 of file web.\+c.



Referenced by web\+\_\+data\+\_\+connect\+\_\+callback().

\index{web.\+c@{web.\+c}!web\+\_\+init@{web\+\_\+init}}
\index{web\+\_\+init@{web\+\_\+init}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{web\+\_\+init(int port)}{web_init(int port)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void web\+\_\+init (
\begin{DoxyParamCaption}
\item[{int}]{port}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_aa7a1c2f567713688983ddecf9fa0d8d6}{}\label{web_8c_aa7a1c2f567713688983ddecf9fa0d8d6}


Setup W\+EB server and accept connections. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em port} & port number to run web server on \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 2490 of file web.\+c.



Referenced by setup().

\index{web.\+c@{web.\+c}!web\+\_\+init\+\_\+connections@{web\+\_\+init\+\_\+connections}}
\index{web\+\_\+init\+\_\+connections@{web\+\_\+init\+\_\+connections}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{web\+\_\+init\+\_\+connections()}{web_init_connections()}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void web\+\_\+init\+\_\+connections (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_aced225563307f62a9832c387fd78a0f8}{}\label{web_8c_aced225563307f62a9832c387fd78a0f8}


Definition at line 2475 of file web.\+c.

\index{web.\+c@{web.\+c}!web\+\_\+sep@{web\+\_\+sep}}
\index{web\+\_\+sep@{web\+\_\+sep}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{web\+\_\+sep(void)}{web_sep(void)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void web\+\_\+sep (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a32080fe9d866898d9fb3dce10079b1ff}{}\label{web_8c_a32080fe9d866898d9fb3dce10079b1ff}


printer seperator 

\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 182 of file web.\+c.



Referenced by tcp\+\_\+accept().

\index{web.\+c@{web.\+c}!web\+\_\+task@{web\+\_\+task}}
\index{web\+\_\+task@{web\+\_\+task}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{web\+\_\+task()}{web_task()}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void web\+\_\+task (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_ab058978d28bd1522323798b56d903176}{}\label{web_8c_ab058978d28bd1522323798b56d903176}


Process A\+LL incoming H\+T\+TP requests. 

\begin{DoxySeeAlso}{See also}
\hyperlink{web_8c_a83e96b326e5d0ef41c95a83d510705dc}{process\+\_\+requests()} 
\end{DoxySeeAlso}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 2441 of file web.\+c.



Referenced by loop\+\_\+wrapper().

\index{web.\+c@{web.\+c}!write\+\_\+buffer@{write\+\_\+buffer}}
\index{write\+\_\+buffer@{write\+\_\+buffer}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{write\+\_\+buffer(rwbuf\+\_\+t $\ast$p)}{write_buffer(rwbuf_t *p)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int write\+\_\+buffer (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_ab32eaeba7482e80dde268638c1514a6d}{}\label{web_8c_ab32eaeba7482e80dde268638c1514a6d}


Socket write buffer for this connection We wait for previous send to complete -\/ then send any new data We do not wait for new data to finish sending -\/ you use flush for that. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer for this socket buffer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
size of data in buffer or -\/1 on error 
\end{DoxyReturn}


Definition at line 266 of file web.\+c.



Referenced by write\+\_\+flush().

\index{web.\+c@{web.\+c}!write\+\_\+byte@{write\+\_\+byte}}
\index{write\+\_\+byte@{write\+\_\+byte}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{write\+\_\+byte(rwbuf\+\_\+t $\ast$p, int c)}{write_byte(rwbuf_t *p, int c)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int write\+\_\+byte (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p, }
\item[{int}]{c}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a50c911d56af7c50bc045cffb983d76f0}{}\label{web_8c_a50c911d56af7c50bc045cffb983d76f0}


Write a byte (buffered) using the \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} socket buffers for this connection If the buffers are full the socket is written using write\+\_\+flush. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer for this socket buffer \\
\hline
\mbox{\tt in}  & {\em 1} & on success 0 on fail \\
\hline
\end{DoxyParams}


Definition at line 339 of file web.\+c.



Referenced by \+\_\+write\+\_\+byte\+\_\+fn(), write\+\_\+len(), and write\+\_\+str().

\index{web.\+c@{web.\+c}!write\+\_\+flush@{write\+\_\+flush}}
\index{write\+\_\+flush@{write\+\_\+flush}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{write\+\_\+flush(rwbuf\+\_\+t $\ast$p)}{write_flush(rwbuf_t *p)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} int write\+\_\+flush (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a5e0970f0d980f87fb5524a757f96fa84}{}\label{web_8c_a5e0970f0d980f87fb5524a757f96fa84}


Write all outstanding data and wait for it to send. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer for this socket buffer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 323 of file web.\+c.



Referenced by write\+\_\+byte().

\index{web.\+c@{web.\+c}!write\+\_\+len@{write\+\_\+len}}
\index{write\+\_\+len@{write\+\_\+len}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{write\+\_\+len(rwbuf\+\_\+t $\ast$p, char $\ast$str, int len)}{write_len(rwbuf_t *p, char *str, int len)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void write\+\_\+len (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p, }
\item[{char $\ast$}]{str, }
\item[{int}]{len}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a751d54408d691ebc079108ffc42ee436}{}\label{web_8c_a751d54408d691ebc079108ffc42ee436}


Write data using buffered write\+\_\+byte function. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer for this socket buffer \\
\hline
\mbox{\tt in}  & {\em $\ast$str} & data buffer to write \\
\hline
\mbox{\tt in}  & {\em len} & number of bytes to write \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 758 of file web.\+c.



Referenced by html\+\_\+msg().

\index{web.\+c@{web.\+c}!write\+\_\+str@{write\+\_\+str}}
\index{write\+\_\+str@{write\+\_\+str}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{write\+\_\+str(rwbuf\+\_\+t $\ast$p, char $\ast$str)}{write_str(rwbuf_t *p, char *str)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} void write\+\_\+str (
\begin{DoxyParamCaption}
\item[{{\bf rwbuf\+\_\+t} $\ast$}]{p, }
\item[{char $\ast$}]{str}
\end{DoxyParamCaption}
)}\hypertarget{web_8c_a2a5efc80e175181baf607f7f9a1358e5}{}\label{web_8c_a2a5efc80e175181baf607f7f9a1358e5}


Write string using buffered write\+\_\+byte function. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em $\ast$p} & \hyperlink{structrwbuf__t}{rwbuf\+\_\+t} pointer for this socket buffer \\
\hline
\mbox{\tt in}  & {\em $\ast$str} & 0 terminated string to write \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 774 of file web.\+c.



\subsection{Variable Documentation}
\index{web.\+c@{web.\+c}!\+\_\+led@{\+\_\+led}}
\index{\+\_\+led@{\+\_\+led}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{\+\_\+led}{_led}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+E\+M\+S\+P\+A\+CE} \+\_\+led = 0\hspace{0.3cm}{\ttfamily [static]}}\hypertarget{web_8c_a9caaaad7e2fdc8c9f2e927980c57d639}{}\label{web_8c_a9caaaad7e2fdc8c9f2e927980c57d639}


Turn on virtual L\+ED. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em led} & led to turn on \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 372 of file web.\+c.

\index{web.\+c@{web.\+c}!connections@{connections}}
\index{connections@{connections}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{connections}{connections}}]{\setlength{\rightskip}{0pt plus 5cm}int connections}\hypertarget{web_8c_a0ba17441c382732ee4172abce4f7b31c}{}\label{web_8c_a0ba17441c382732ee4172abce4f7b31c}


Definition at line 45 of file web.\+c.



Referenced by tcp\+\_\+accept(), user\+\_\+loop(), user\+\_\+tests(), web\+\_\+data\+\_\+connect\+\_\+callback(), web\+\_\+data\+\_\+disconnect\+\_\+callback(), web\+\_\+data\+\_\+error\+\_\+callback(), web\+\_\+data\+\_\+receive\+\_\+callback(), and web\+\_\+data\+\_\+sent\+\_\+callback().

\index{web.\+c@{web.\+c}!http\+\_\+status@{http\+\_\+status}}
\index{http\+\_\+status@{http\+\_\+status}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{http\+\_\+status}{http_status}}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ http\+\_\+status\mbox{[}$\,$\mbox{]}}\hypertarget{web_8c_a81bbe3cdfc6aad2405aaa9432ae49b92}{}\label{web_8c_a81bbe3cdfc6aad2405aaa9432ae49b92}


H\+T\+TP status code messages. 



Definition at line 86 of file web.\+c.



Referenced by html\+\_\+status().

\index{web.\+c@{web.\+c}!mimes@{mimes}}
\index{mimes@{mimes}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{mimes}{mimes}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf mime\+\_\+t} mimes\mbox{[}$\,$\mbox{]}}\hypertarget{web_8c_a8239fd1b0c1007f135d8d95e8183981b}{}\label{web_8c_a8239fd1b0c1007f135d8d95e8183981b}
{\bfseries Initial value\+:}
\begin{DoxyCode}
= \{
    \{ \hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9ea90b1e6aa374cea27cc6fb55c5feba5c6}{PTYPE\_TEXT}, \textcolor{stringliteral}{"text/plain"}, \textcolor{stringliteral}{".text"}, \textcolor{stringliteral}{".txt"} \},
    \{ \hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9ea4bd960e514f0585643742b8bd4b77f3b}{PTYPE\_HTML}, \textcolor{stringliteral}{"text/html"}, \textcolor{stringliteral}{".htm"}, \textcolor{stringliteral}{".html"} \},
    \{ \hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9ea30057776e71c48725f93b464b45c9a21}{PTYPE\_PDF},   \textcolor{stringliteral}{"application/pdf"}, \textcolor{stringliteral}{".pdf"},\hyperlink{cpu_8h_a070d2ce7b6bb7e5c05602aa8c308d0c4}{NULL}\},
    \{ \hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9ea319eff9f0f2a8e6f74c5a319fc1cb4e4}{PTYPE\_CSS},   \textcolor{stringliteral}{"text/css"}, \textcolor{stringliteral}{".css"}, NULL \},
    \{ \hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9ea96590ec99e2f5ce52c16218c19441c77}{PTYPE\_CGI},   \textcolor{stringliteral}{"text/html"}, \textcolor{stringliteral}{".cgi"}, NULL \},
    \{ \hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9ea68ab53191252e14d5f4b4025b956cadf}{PTYPE\_JS},     \textcolor{stringliteral}{"text/plain"}, \textcolor{stringliteral}{".js"}, NULL \},
    \{ \hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9eae0868088fd938478331ae365e481a2d3}{PTYPE\_XML},   \textcolor{stringliteral}{"text/plain"}, \textcolor{stringliteral}{".xml"}, NULL \},
    \{ \hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9eacbda84af249fa4ef414b6b5c32eec998}{PTYPE\_ICO},   \textcolor{stringliteral}{"mage/vnd.microsoft.icon"}, \textcolor{stringliteral}{".ico"}, NULL \},
    \{ \hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9ea30f126f9623d527070097095a12e69d6}{PTYPE\_GIF},   \textcolor{stringliteral}{"image/gif"}, \textcolor{stringliteral}{".gif"}, NULL \},
    \{ \hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9eaabae39c4d39e7574d9e0459d6ada9675}{PTYPE\_JPEG},     \textcolor{stringliteral}{"image/jpeg"}, \textcolor{stringliteral}{".jpg"}, \textcolor{stringliteral}{".jpeg"} \},
    \{ \hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9eae45f3c9fce9b5c96bf27fb291662b0cb}{PTYPE\_MPEG},     \textcolor{stringliteral}{"video/mpeg"}, \textcolor{stringliteral}{".mpg"}, \textcolor{stringliteral}{".mpeg"} \},
    \{ \hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9eafb13489a2aca6e1485d8f1b36aab9bd5}{PTYPE\_FLASH},   \textcolor{stringliteral}{"application/x-shockwave-flash"}, \textcolor{stringliteral}{".swf"}, NULL \},
    \{ \hyperlink{web_8h_a61dadd085c1777f559549e05962b2c9ea8a75b468753c30e47935e8db26c91680}{PTYPE\_ERR},   \textcolor{stringliteral}{"text/html"}, \hyperlink{cpu_8h_a070d2ce7b6bb7e5c05602aa8c308d0c4}{NULL} , NULL \}
\}
\end{DoxyCode}


M\+I\+ME types. 



Definition at line 160 of file web.\+c.

\index{web.\+c@{web.\+c}!msg\+\_\+headers@{msg\+\_\+headers}}
\index{msg\+\_\+headers@{msg\+\_\+headers}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{msg\+\_\+headers}{msg_headers}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf header\+\_\+t} msg\+\_\+headers\mbox{[}$\,$\mbox{]}}\hypertarget{web_8c_a272852abae296b3cd79f00810f4d2915}{}\label{web_8c_a272852abae296b3cd79f00810f4d2915}
{\bfseries Initial value\+:}
\begin{DoxyCode}
= \{
    \{ \textcolor{stringliteral}{"GET"},                \hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04a6b4dfa1db88da421c74c30dc94c3ce53}{TOKEN\_GET} \},
    \{ \textcolor{stringliteral}{"PUT"},                \hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04a2a1292bc924f34d6d69a7b71501ae73f}{TOKEN\_PUT} \},
    \{ \textcolor{stringliteral}{"POST"},               \hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04a4cb258960bebf97073876d09836f1618}{TOKEN\_POST} \},
    \{ \textcolor{stringliteral}{"HEAD"},               \hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04a7a543c7cf1ac077230c499a41c3a8a94}{TOKEN\_HEAD} \},
    \{ \textcolor{stringliteral}{"Host:"},              \hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04a04d43499e4bc7c9f971f7a660d098ff1}{TOKEN\_HOST} \},
    \{ \textcolor{stringliteral}{"User-Agent:"},        \hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04a4e115a8a34594af0f253e8472cffe673}{TOKEN\_USER\_AGENT} \},
    \{ \textcolor{stringliteral}{"HTTPS:"},             \hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04ae47eb1ae54089e857fd7795282a7ae1d}{TOKEN\_HTTPS}\},
    \{ \textcolor{stringliteral}{"DNT:"},               \hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04a37110324f9064d3a7e41029d572141d0}{TOKEN\_DNT}\},
    \{ \textcolor{stringliteral}{"Accept:"},            \hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04af8b41aa43b046daa7c0ada29d27b7cdb}{TOKEN\_ACCEPT} \},
    \{ \textcolor{stringliteral}{"Accept-Language:"},   \hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04a3fdcc37f74cb2179b65913891e1f02d8}{TOKEN\_ACCEPT\_LANGUAGE} \},
    \{ \textcolor{stringliteral}{"Accept-Encoding:"},   \hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04add40d0810a662bffc6a5d437e2a86c10}{TOKEN\_ACCEPT\_ENCODING} \},
    \{ \textcolor{stringliteral}{"Connection:"},        \hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04ad862c732a351f70da32231c9f4298d05}{TOKEN\_CONNECTION} \},
    \{ \textcolor{stringliteral}{"Referer:"},           \hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04ab9bf3f747c7169a74f228b4f173c2bf4}{TOKEN\_REFERER} \},
    \{ \textcolor{stringliteral}{"Content-Length:"},    \hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04a727fe5423c611ba2fac22b301c60e962}{TOKEN\_CONTENT\_LENGTH} \},
    \{ \textcolor{stringliteral}{"Content-Type:"},      \hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04ad871a413f306c0544fd283658f046805}{TOKEN\_CONTENT\_TYPE} \},
    \{ \textcolor{stringliteral}{"Cache-Control:"},     \hyperlink{web_8h_abc6126af1d45847bc59afa0aa3216b04a991253922f53b4456f895f846e82b946}{TOKEN\_CACHE\_CONTROL} \},
    \{ \hyperlink{cpu_8h_a070d2ce7b6bb7e5c05602aa8c308d0c4}{NULL},                 -1\}
\}
\end{DoxyCode}


H\+T\+TP headers we understand. 



Definition at line 61 of file web.\+c.

\index{web.\+c@{web.\+c}!web\+\_\+connections@{web\+\_\+connections}}
\index{web\+\_\+connections@{web\+\_\+connections}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{web\+\_\+connections}{web_connections}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf rwbuf\+\_\+t}$\ast$ web\+\_\+connections\mbox{[}{\bf M\+A\+X\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+NS}\mbox{]}}\hypertarget{web_8c_a18c3cff4e8a9ff56871f13dfb3cd48ad}{}\label{web_8c_a18c3cff4e8a9ff56871f13dfb3cd48ad}


socket buffers for this connection 



Definition at line 50 of file web.\+c.

\index{web.\+c@{web.\+c}!Web\+Conn@{Web\+Conn}}
\index{Web\+Conn@{Web\+Conn}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{Web\+Conn}{WebConn}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf espconn\+\_\+t} Web\+Conn}\hypertarget{web_8c_a96c7e595cf56145fc95dc2c66ac3930f}{}\label{web_8c_a96c7e595cf56145fc95dc2c66ac3930f}


Master espconn structure of the web server. 



Definition at line 53 of file web.\+c.



Referenced by find\+\_\+connection(), and rwbuf\+\_\+delete().

\index{web.\+c@{web.\+c}!Web\+Tcp@{Web\+Tcp}}
\index{Web\+Tcp@{Web\+Tcp}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{Web\+Tcp}{WebTcp}}]{\setlength{\rightskip}{0pt plus 5cm}esp\+\_\+tcp Web\+Tcp\hspace{0.3cm}{\ttfamily [static]}}\hypertarget{web_8c_a82e626c8ae638c2d59ae0590e5eab381}{}\label{web_8c_a82e626c8ae638c2d59ae0590e5eab381}


Master network configuration for the web server. 



Definition at line 55 of file web.\+c.

\index{web.\+c@{web.\+c}!winmsg@{winmsg}}
\index{winmsg@{winmsg}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{winmsg}{winmsg}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf window}$\ast$ winmsg}\hypertarget{web_8c_a91a5294702debbeba1acf3cc43784ce9}{}\label{web_8c_a91a5294702debbeba1acf3cc43784ce9}
\index{web.\+c@{web.\+c}!wintop@{wintop}}
\index{wintop@{wintop}!web.\+c@{web.\+c}}
\subsubsection[{\texorpdfstring{wintop}{wintop}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf window} $\ast$ wintop}\hypertarget{web_8c_aff6226bcabba958e69ff897ec86a13b2}{}\label{web_8c_aff6226bcabba958e69ff897ec86a13b2}
